#ifndef DB_H
#define DB_H

#include <QStringList>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QThread>
#include <QQueue>
#include <QMutex>
#include <QSet>

class DB
{
public:
    static DB* getInstance();
    ~DB();
    QSqlDatabase getConnection();
    void releaseConnection(QSqlDatabase& connection);
    bool isConnectionValid(const QSqlDatabase& db);
//    // 获得符合条件的用户详细信息
//    QStringList getPersonnel(const QString& condition);
//    // 获得当前用户的登录信息
//    QStringList getTmsUser(const QString& role, const QString& username, const QString& password);
//    // 向数据库中插入注册用户
//    bool addUser(const QString& role, const QString& username, const QString& password);
private:
    DB();
    static DB* instance;
//    QSqlDatabase threadLocalDatabase;

    // 禁止通过拷贝构造函数创建对象
    DB(const DB&) = delete;
    DB& operator=(const DB&) = delete;
    // 禁止对象之间的赋值操作
    QQueue<QSqlDatabase> connectionPool;
    QMutex mutex;
    static const int MAX_CONNECTIONS = 10;
    QSet<QString> activeConnections;  // 跟踪活动连接
    int connectionCounter;// 连接计数器
    QString generateConnectionName();
};

#endif // DB_H
